<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Promise.all
    // 接收一个Promise的数组，返回一个Promise对象
    // 当所有的Promise对象都成功时，返回一个fulfilled状态的Promise对象

    function myPromsieAll(promises) {
        if (!Array.isArray(promises)) {
            throw new TypeError('arguments must be an array')
            return;
        }
        // 定义一个结果数组 用来保存所有的成功的Promsie对象的结果数据
        const result = []
        return new Promise((resolve, reject) => {
            // 遍历所有的Promise对象
            promises.forEach((promise, index) => {
                // 保证参数数组中的元素都是Promise对象
                Promise.resolve(promise).then(value => {
                    // 将Promise对象成功的结果 添加到结果数组中
                    result[index] = value
                    // 判断所有的Promise对象都成功
                    if (result.length === promises.length) {
                        resolve(result)
                    }
                }, reason => {
                    reject(reason)
                })
            })
        })
    }


    const p1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('成功')
        }, 1000)
    })
    const p2 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('失败')
        }, 2000)
    })
    console.log(myPromsieAll([123]));


</script>

</html>